package com.briup.ch11;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

/**
 * @Author briup-adam
 * @Date 2023/10/19 上午8:12
 * @Description
 **/

public class ReadAndWriteByteFile {
    //读文件使用字节流
    static void readFile() {
//        声明流
        FileInputStream fis = null;
        ArrayList<Integer> list = new ArrayList<>();
//        创建流
        try {
            fis = new FileInputStream("/Users/adam/code/idea-workspace/bttc-code/02code/src/十年.txt");
            System.out.println(fis.markSupported());
//            使用流
//           一个字节一个字节的读
//            int val = 0;
//            while ((val = fis.read()) != -1) {
//                System.out.println(val);
//                list.add(val);
//            }

//            byte b[]=new byte[1024];
//            int len=0;
            //将读到的字节 存储到数组b  len表示这次读到的字节个数
//            while ((len=fis.read(b))!=-1){
//                String s = new String(b,0,len);
//                System.out.println(s);
//            }
            fis.skip(500);

            byte b[] = new byte[1024];
            int len = 0;
            while ((len = fis.read(b, 0, b.length)) != -1) {
                System.out.println(new String(b, 0, len));
            }


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

//        byte [] arr=new byte[list.size()];
//        for (int i = 0; i < list.size(); i++) {
//            int val = list.get(i).intValue();
//            arr[i]= (byte) val;
//        }

//        String s = new String(arr);
//        System.out.println(s);
    }

    static void writeFile(String fileContent, String fileName) {
        //声明流
        FileOutputStream fos = null;
        try {
            //创建流  如果文件输出到已存在的文件  默认会覆盖之前的文件内容  可以传入第二个参数 为true 表示允许追加
            fos = new FileOutputStream(fileName, true);
            //使用流
            //将字符串 转换成字节数组
            byte[] bytes = fileContent.getBytes();
//            for (byte b : bytes) {
//                //写出一个字节
//                fos.write(b);
//            }
            //将字节数组的内容全部写出
//            fos.write(bytes);
            //将字节数组的内容  从制定位置开始往后  指定长度个
            fos.write(bytes, 0, bytes.length);
            //刷新
            fos.flush();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //将一个文件的内容 拷贝拷贝到另一个文件
    static void readAndWrite(String srcName, String destName) {
//声明流
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            //创建流
            fis = new FileInputStream(srcName);
            fos = new FileOutputStream(destName);
            //使用流
            //1.创建字节数组
            //2.声明变量  记录读取的字节数
            byte []  b=new byte[1024];
            int len=0;
            while ((len=fis.read(b))!=-1){
                fos.write(b,0,len);
            }
            fos.flush();

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (fis!=null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos!=null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }

    public static void main(String[] args) {
        String s = "如果那两个字没有颤抖\n" +
                "我不会发现我难受\n" +
                "怎么说出口\n" +
                "也不过是分手\n" +
                "如果对于明天没有要求\n" +
                "牵牵手就像旅游\n" +
                "成千上万个门口\n" +
                "总有一个人要先走\n" +
                "怀抱既然不能逗留\n" +
                "何不在离开的时候\n" +
                "一边享受 一边泪流\n" +
                "十年之前\n" +
                "我不认识你 你不属于我\n" +
                "我们还是一样\n" +
                "陪在一个陌生人左右\n" +
                "走过渐渐熟悉的街头\n" +
                "十年之后\n" +
                "我们是朋友 还可以问候\n" +
                "只是那种温柔\n" +
                "再也找不到拥抱的理由\n" +
                "情人最后难免沦为朋友\n" +
                "怀抱既然不能逗留\n" +
                "何不在离开的时候\n" +
                "一边享受 一边泪流\n" +
                "十年之前\n" +
                "我不认识你 你不属于我\n" +
                "我们还是一样\n" +
                "陪在一个陌生人左右\n" +
                "走过渐渐熟悉的街头\n" +
                "十年之后\n" +
                "我们是朋友 还可以问候\n" +
                "只是那种温柔\n" +
                "再也找不到拥抱的理由\n" +
                "情人最后难免沦为朋友\n" +
                "直到和你做了多年朋友\n" +
                "才明白我的眼泪\n" +
                "不是为你而流\n" +
                "也为别人而流";
//        readFile();
//        writeFile(s,"/Users/adam/code/idea-workspace/bttc-code/02code/src/十年.txt");
        readAndWrite("02code/src/页面 1.png","02code/src/橘子大使.png");
    }

}
